/*
 * @Author: liuYang codkly@gmail.com
 * @Date: 2022-10-26 22:55:19
 * @LastEditors: liuYang codkly@gmail.com
 * @LastEditTime: 2022-11-08 09:18:05
 * @FilePath: \coding\blog\blog_server\src\common\automate.js
 * @Description:
 * 暂无备注
 */
// 根据数据库自动生成 model
const { mysql } = require("../config");

const Automate = require("sequelize-automate");
// dbOptions 和 options
const dbOptions = {
  database: mysql.database,
  username: mysql.username,
  password: mysql.password,
  dialect: "mysql",
  host: mysql.host,
  port: mysql.port,
  logging: false, //
};
const options = {
  type: "js", // 指定 models 代码风格
  camelCase: false, // Models 文件中代码是否使用驼峰发命名
  fileNameCamelCase: true, // Model 文件名是否使用驼峰法命名，默认文件名会使用表名，如 `user_post.js`；如果为 true，则文件名为 `userPost.js`
  dir: "models", // 指定输出 models 文件的目录
  typesDir: "models", // 指定输出 TypeScript 类型定义的文件目录，只有 TypeScript / Midway 等会有类型定义
  emptyDir: false, // 生成 models 之前是否清空 `dir` 以及 `typesDir`
  tables: null, // 指定生成哪些表的 models，如 ['user', 'user_post']；如果为 null，则忽略改属性
  skipTables: null, // 指定跳过哪些表的 models，如 ['user']；如果为 null，则忽略改属性
  tsNoCheck: false, // 是否添加 `@ts-nocheck` 注释到 models 文件中
};

// 创建一个 automate 实例
const automate = new Automate(dbOptions, options);

(async function main() {
  // // 获取 Models JSON 定义
  // const definitions = await automate.getDefinitions();
  // console.log(definitions);

  // 或生成代码
  const code = await automate.run();
  //   console.log(code);
})();
